'\" te
.\"  Copyright (c) 1996, Sun Microsystems, Inc.  All Rights Reserved
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH CSX_ACCESSCONFIGURATIONREGISTER 9F "Jul 19, 1996"
.SH NAME
csx_AccessConfigurationRegister \- read or write a PC Card Configuration
Register
.SH SYNOPSIS
.nf
#include <sys/pccard.h>



\fBint32_t\fR \fBcsx_AccessConfigurationRegister\fR(\fBclient_handle_t\fR \fIch\fR,
     \fBaccess_config_reg_t *\fR\fIacr\fR);
.fi

.SH INTERFACE LEVEL
illumos \fBDDI \fRSpecific (illumos \fBDDI) \fR
.SH PARAMETERS
.ne 2
.na
\fB\fIch\fR\fR
.ad
.RS 7n
Client handle returned from \fBcsx_RegisterClient\fR(9F).
.RE

.sp
.ne 2
.na
\fB\fIacr\fR\fR
.ad
.RS 7n
Pointer to an \fBaccess_config_reg_t\fR structure.
.RE

.SH DESCRIPTION
This function allows a client to read or write a \fBPC\fRCard Configuration
Register.
.SH STRUCTURE MEMBERS
The structure members of \fBaccess_config_reg_t\fR are:
.sp
.in +2
.nf
uint32_t     Socket;     /* socket number*/
uint32_t     Action;     /* register access operation*/
uint32_t     Offset;     /* config register offset*/
uint32_t     Value;      /* value read or written*/
.fi
.in -2

.sp
.LP
The fields are defined as follows:
.sp
.ne 2
.na
\fB\fBSocket\fR\fR
.ad
.RS 10n
Not used in illumos, but for portability with other Card Services
implementations, it should be set to the logical socket number.
.RE

.sp
.ne 2
.na
\fB\fBAction\fR\fR
.ad
.RS 10n
May be set to \fBCONFIG_REG_READ\fR or \fBCONFIG_REG_WRITE\fR. All other values
in the \fBAction\fR field are reserved for future use. If the \fBAction\fR
field is set to \fBCONFIG_REG_WRITE,\fR the \fBValue\fR field is written to the
specified configuration register. Card Services does not read the configuration
register after a write operation. For that reason, the \fBValue\fR field is
only updated by a \fBCONFIG_REG_READ\fR request.
.RE

.sp
.ne 2
.na
\fB\fBOffset\fR\fR
.ad
.RS 10n
Specifies the byte offset for the desired configuration register from the \fBPC
\fRCard configuration register base specified in
\fBcsx_RequestConfiguration\fR(9F).
.RE

.sp
.ne 2
.na
\fB\fBValue\fR\fR
.ad
.RS 10n
Contains the value read from the \fBPC \fRCard Configuration Register for a
read operation. For a write operation, the \fBValue\fR field contains the value
to write to the configuration register. As noted above, on return from a write
request, the \fBValue\fR field is the value written to the \fBPC \fRCard and
not any changed value that may have resulted from the write request (that is,
no read after write is performed).
.RE

.sp
.LP
A client must be very careful when writing to the \fBCOR \fR(Configuration
Option Register) at offset \fB0\fR. This has the potential to change the type
of interrupt request generated by the \fBPC \fRCard or place the card in the
reset state. Either request may have undefined results. The client should read
the register to determine the appropriate setting for the interrupt mode (Bit
6) before writing to the register.
.sp
.LP
If a client wants to reset a \fBPC\fRCard, the \fBcsx_ResetFunction\fR(9F)
function should be used. Unlike \fBcsx_AccessConfigurationRegister()\fR, the
\fBcsx_ResetFunction\fR(9F) function generates a series of event notifications
to all clients using the \fBPC \fRCard, so they can re-establish the
appropriate card state after the reset operation is complete.
.SH RETURN VALUES
.ne 2
.na
\fB\fBCS_SUCCESS\fR\fR
.ad
.RS 27n
Successful operation.
.RE

.sp
.ne 2
.na
\fB\fBCS_BAD_ARGS\fR\fR
.ad
.RS 27n
Specified arguments are invalid. Client specifies an \fBOffset\fR that is out
of range or neither \fBCONFIG_REG_READ\fR or \fBCONFIG_REG_WRITE\fR is set.
.RE

.sp
.ne 2
.na
\fB\fBCS_UNSUPPORTED_MODE\fR\fR
.ad
.RS 27n
Client has not called \fBcsx_RequestConfiguration\fR(9F) before calling this
function.
.RE

.sp
.ne 2
.na
\fB\fBCS_BAD_HANDLE\fR\fR
.ad
.RS 27n
Client handle is invalid.
.RE

.sp
.ne 2
.na
\fB\fBCS_NO_CARD\fR\fR
.ad
.RS 27n
No \fBPC \fRcard in socket.
.RE

.sp
.ne 2
.na
\fB\fBCS_UNSUPPORTED_FUNCTION\fR\fR
.ad
.RS 27n
No \fBPCMCIA \fRhardware installed.
.RE

.SH CONTEXT
This function may be called from user or kernel context.
.SH SEE ALSO
.BR csx_ParseTuple (9F),
.BR csx_RegisterClient (9F),
.BR csx_RequestConfiguration (9F),
.BR csx_ResetFunction (9F)
.sp
.LP
\fIPCCard 95 Standard, PCMCIA/JEIDA\fR
